package service;

import dao.CursoDisciplinaDAO;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.Curso;
import modelo.CursoDisciplina;
import modelo.Disciplina;
import util.FabricaDeObjetos;
import util.JPAUtil;

/**
 *
 * @author visitante
 */
public class CursoDisciplinaService {

    private static CursoDisciplinaDAO cursoDisciplinaDAO;

    static {
        try {
            cursoDisciplinaDAO = (CursoDisciplinaDAO) FabricaDeObjetos.getObjetoUnico(CursoDisciplinaDAO.class);
        } catch (Exception ex) {
            Logger.getLogger(CursoDisciplinaService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public List<CursoDisciplina> getTodos() {
        return cursoDisciplinaDAO.getAll();
    }

    public CursoDisciplina getPorId(Long id) {
        return cursoDisciplinaDAO.getPorId(id);
    }

    public List<CursoDisciplina> getPorCurso(Curso curso) {
        return cursoDisciplinaDAO.getPorCurso(curso);
    }

    public List<CursoDisciplina> getPorDisciplina(Disciplina disciplina) {
        return cursoDisciplinaDAO.getPorDisciplina(disciplina);
    }

    public CursoDisciplina getPorCursoEDisciplina(Curso curso, Disciplina disciplina) {
        return cursoDisciplinaDAO.getPorCursoEDisciplina(curso, disciplina);
    }

    public void inserir(CursoDisciplina cursoDisciplina) {
        JPAUtil.beginTransaction();
        cursoDisciplinaDAO.persist(cursoDisciplina);
        JPAUtil.commitTransaction();
    }

    public void remover(CursoDisciplina cursoDisciplina) {
        JPAUtil.beginTransaction();
        CursoDisciplina cursoDisciplina1 = cursoDisciplinaDAO.getPorId(cursoDisciplina.getId());
        cursoDisciplinaDAO.remove(cursoDisciplina1);
        JPAUtil.commitTransaction();
    }

    public void alterar(CursoDisciplina cursoDisciplinaMod) {
        JPAUtil.beginTransaction();
        cursoDisciplinaDAO.merge(cursoDisciplinaMod);
        JPAUtil.commitTransaction();
    }
}
